#pragma once
#include "common_data.h"

enum class PipelineType {
	pipeline_stack = 0,		// 码垛
	pipeline_unstack = 1,	// 拆垛
	pipeline_unstckToStack = 2,	// 拆码一体
	pipeline_move = 3,		// 移动货物

	pipeline_max,
};

enum class PipelineTaskState {
	pipeline_error = 0,					// 业务线出错
	pipeline_task_idle = 1,				// 任务空闲	
	pipeline_task_receive = 2,			// 任务接收
	pipeline_task_inited = 3,			// 任务初始化
	pipeline_task_start = 4,			// 任务开始
	pipeline_task_stepPrepare = 5,		// 任务节拍准备
	pipeline_task_stepStart = 6,		// 任务节拍开始
	pipeline_task_wait_finish = 7,		// 等待完成
	pipeline_task_finish = 8,			// 任务完成

	pipeline_state_max,
};


struct PipelineTaskInfo {
	QString taskId;
	int taskNum;
	int finishNum;

	QString skuNo;
	Size skuSize;
	float skuWight;
};

struct PipelineInfo {
	QString id;
	QString rob;
	QString grab;	// 抓取点
	QString putdown;	// 放置点
	PipelineType type;
};
namespace pipeline {
	/*任务信息*/
	struct TaskInfo {
		bool isBusy;
		QString taskId;		 // 任务编号
		int taskNum;		 // 任务数量
		int stackType;		 // 要求的放置方式， 0：自定义
		void clear()
		{
			isBusy = false;
			taskId.clear();
			taskNum = -1;
			stackType = 0;
		}
	};
	struct ExecuteInfo {
		int finishNum;	// 已完成任务数量
		int execNum;	// 执行中的任务数量
		int execIndex;	// 执行次数
		void clear()
		{
			finishNum = 0;
			execNum = 0;
			execIndex = 0;
		}
	};
	//	节拍信息
	struct StepInfo {
		bool valied;
		int id;
		QStringList sendPaths;	// 获取的路径列表
		QStringList waitPaths;	// 等待完成的路径列表
		int excuteNum;
		Position grabPos;	// 抓取坐标
		Position putPos;	// 放置坐标
		void clear()
		{
			valied = false;
			sendPaths.clear();
			waitPaths.clear();
			excuteNum = 0;
			grabPos = putPos = { 0 };
		}
	};

};



